package com.xuyuan.swing;

import javax.swing.*;
import java.awt.*;

public class Heart extends JFrame {
    Graphics graphics; // 画笔
    double x;
    double y;
    double t = 0;

    Heart() {
        setLayout(null); // 关闭窗口布局管理器
        setSize(700, 1000); // 设置窗口大小
        setLocationRelativeTo(null); // 窗口显示在屏幕中间。
        setVisible(true); // 显示窗口
        graphics = getContentPane().getGraphics(); // 初始化画笔
        graphics.setFont(new Font("", Font.BOLD, 18)); // 设置画画的字符大小
    }

    public void updateWindow() {
        // https://mathworld.wolfram.com/HeartCurve.html
        x = 16 * Math.pow(Math.sin(t), 3);
        y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);
        x *= 10;
        y *= 10;
        y += 400;
        x += 200;
        graphics.drawString("o", (int) x, (int) y);
        t += 0.001;
    }

    public static void main(String[] args) {
        Heart heart = new Heart();
        while (true) {
            heart.updateWindow(); // 更新窗口
        }
    }
}